package com.wzl.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wzl.constant.CommonConstant;
import com.wzl.entity.dto.PatientInfoDTO;
import com.wzl.service.PatientInfoService;
import com.wzl.util.Res;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("patientInfo")
@AllArgsConstructor
public class PatientInfoController {
    @Autowired
    private PatientInfoService patientInfoService;

    /**
     * 查询感染者信息分页数据
     *
     * @param patientInfo
     * @return Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:view')")
    @GetMapping("list")
    public Res list(Page<PatientInfoDTO> page, PatientInfoDTO patientInfo) {
        return Res.success(patientInfoService.getPage(page, patientInfo));
    }

    /**
     * 查询每个地区的各个患者属性数量
     *
     * @param
     * @return Res
     */
    @GetMapping("getPatientNum")
    public Res getPatientNum() {
        return Res.success(patientInfoService.getPatientNum());
    }


    /**
     * 查询感染者信息
     *
     * @param
     * @return Res
     */
    @GetMapping("listAll")
    public Res listAll() {
        return Res.success(patientInfoService.getPatientInfo());
    }

    /**
     * 新增感染者信息
     *
     * @param patientInfo
     * @return com.longyi.util.Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:add')")
    @PostMapping("addPatientInfo")
    public Res create(@RequestBody PatientInfoDTO patientInfo) {
        boolean b = this.patientInfoService.savePatient(patientInfo);
        return b ? Res.success(b) : Res.fail(CommonConstant.DICT_FAILED);
    }

    /**
     * 查询PatientTree
     *
     * @param
     * @return Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:treeView')")
    @GetMapping("optionTreeInfo")
    public Res optionTreeInfo() {
        return Res.success(patientInfoService.optionTreeInfo());
    }

    /**
     * 查询密切接触者详情
     *
     * @param id
     * @return Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:detail')")
    @GetMapping("detail/{id}")
    public Res patientDetail(@PathVariable("id") String id) {
        return Res.success(patientInfoService.patientDetail(id));
    }

    /**
     * 删除密切接触者信息
     *
     * @param id
     * @return Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:delete')")
    @GetMapping("delete/{id}")
    public Res deletePatient(@PathVariable("id")String id) {
        return Res.success(patientInfoService.deletePatient(id));
    }

    /**
     * 修改密切接触者信息
     *
     * @param patientInfoDTO
     * @return Res
     */
    @PreAuthorize("@pm.hasPermission('sys:patientinfo:update')")
    @PostMapping("update")
    public Res updatePatient(@RequestBody PatientInfoDTO patientInfoDTO) {
        return Res.success(patientInfoService.updatePatient(patientInfoDTO));
    }


}
